package com.yunhe.tianhe.rentcars.dao.permission;

import com.yunhe.tianhe.commons.dto.Pageable;
import com.yunhe.tianhe.rentcars.entity.permission.Account;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author lanyangyun
 * @version V1.0
 * @Description: //TODO
 * @date 2017/10/25 0025 下午 2:18
 */
public interface AccountDao {
    /**
     * 添加用户
     * @param account
     */
    void save(Account account);

    /**
     * 删除用户
     * @param uId
     */
    void delete(Long uId);

    /**
     * 修改用户
     * @param account
     */
    void update(Account account);

    /**
     * 查找一个用户
     * @param uId
     * @return
     */
    Account findOne(Long uId);

    /**
     * 根据用户名和密码查找用户
     * @param userName
     * @param userPwd
     * @return
     */
    Account findByUser(@Param("userName") String userName, @Param("userPwd") String userPwd);

    /**
     * 根据用户名和密码查找用户
     * @param userName
     * @return
     */
    Account findByUserName(String userName);


    int changePassword(@Param("uId") Long uId, @Param("userPwd") String userPwd, @Param("oldPwd") String oldPwd);

    /**
     * 查所有用户
     * @return
     */
    List<Account> findAll();


    /**
     * 分页查找
     * @param offset
     * @param size
     * @return
     */
    Pageable<Account> findPage(@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     *
     * @return
     */
    int findCount();

    /**
     *
     * @param offset
     * @param size
     * @return
     */
    List<Account> findList(@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     *
     * @param account
     * @return
     */
    int searchCount(Account account);
    /**
     *
     * @param account
     * @return
     */
    List<Account> searchList(Account account);

    /**
     *
     * @param account
     * @return  修改行数
     */
    Long updatePerson(Account account);

}
